Taller introductorio al lenguaje R

Universidad Tecnológica de Pereira

Estadística

Analítica

Algunas aplicaciones en Ingeniería

  • Gestión de activos: ¿Cómo podemos predecir el desgaste de una pieza mecánica en función del tiempo y uso?
  • Predicción de demanda: ¿Cómo podemos predecir la demanda de electricidad en diferentes periodos del año?
  • Optimización de la producción: ¿Cuál es la secuencia óptima de producción para minimizar los tiempos de espera y maximizar la eficiencia?
  • Control de calidad en materiales: ¿Cómo podemos monitorear y mejorar la calidad del concreto utilizado en una construcción?
  • Estudios geotécnicos: ¿Cuál es la distribución de las propiedades del suelo en una zona específica?
  • Análisis de datos de usuarios: ¿Cuáles son los patrones de uso más comunes de una aplicación y cómo podemos mejorar la experiencia del usuario?

Algunas aplicaciones en Ingeniería

  • Seguridad informática: ¿Cuál es la probabilidad de un ataque de seguridad basado en los patrones de tráfico de red?
  • Predicción de plagas: ¿Cómo podemos predecir la aparición de plagas en un cultivo en función de las condiciones climáticas y otros factores?
  • Estudios de impacto ambiental: ¿Cómo podemos medir y reducir el impacto ambiental de prácticas agrícolas específicas?

Algunas aplicaciones en Ciencias de la Educación

  • Análisis de factores que afectan el aprendizaje: ¿Cómo afectan o influyen aspectos sociales, recursos disponibles, etc… en la deserción estudiantil en la U.T.P?
  • Evaluación de programas educativos: ¿Es más efectivo el enfoque Montesori o el Conductista en las escuelas?
  • Diseño de herramientas de alerta temprana: ¿Cómo monitorear el proceso de aprendizaje en plataformas de aprendizaje?

Algunas aplicaciones en Ciencias de la Salud

  • Diseño de instrumentos psicométricos: ¿Cuáles preguntas se deberían hacer para identificar trastornos mentales?
  • Evaluación de efectividad de medicamentos: ¿es más efectivo el medicamento A que el medicamento B en el tratamiento de la diabetes?
  • Estimación del ritmo cardiaco a partir de la actividad física y peso: ¿cómo puede una elíptica estimar el ritmo cardiaco con un bajo margen de error?
  • Predicción de enfermedades: ¿cómo apoyar el diagnóstico temprano del cáncer de mama?
  • Vigilancia epidemiológica: ¿Cómo se pueden identificar la aparición de posibles brotes de enfermedades que se podría convertir en pandemias?

Elementos clave

Ejemplo de aplicación

Áreas complementarias

Lenguajes de programación

Un lenguaje de programación es un conjunto de instrucciones y reglas que permiten a los humanos comunicarse con máquinas.

Lenguajes de programación

“Put simply, programming is giving a set of instructions to a computer to execute. If you’ve ever cooked using a recipe before, you can think of yourself as the computer and the recipe’s author as a programmer. The recipe author provides you with a set of instructions which you read and then follow. The more complex the instructions, the more complex the result!”

Fuente: codecademy.com.

Lenguajes de programación

“programming languages are the tools we use to write instructions for computers to follow. Computers “think” in binary — strings of 1s and 0s. Programming languages allow us to translate the 1s and 0s into something that humans can understand and write. A programming language is made up of a series of symbols that serves as a bridge that allow humans to translate our thoughts into instructions computers can understand.”

Fuente: codecademy.com.

Historia

Charles Babbage (Diciembre 26, 1791 - Octubre 18, 1871)

Ada Lovelance (Diciembre 10, 1815 - Noviembre 27, 1852)

Alan Turing (Junio 23, 1912 - Junio 7, 1954)

Elementos de los lenguajes de programación

  • Sintaxis : reglas que definen la estructura y el formato del código.
  • Semántica : significado de las instrucciones escritas en el lenguaje.
  • Pragmática : manera en que se usa el lenguaje de programación para resolver un problema.

Ejemplo de sintaxis

# Ejemplo correcto
x <- 10
y <- 20

suma <- x+y
print(suma) # Output: [1] 30

# Ejemplo incorrecto
x <- 10
y <- 20

suma <- x+y
print suma # Output: Error: unexpected symbol in "print suma"

Adaptado de Valencia Díaz (2024)

Ejemplo de sintaxis

# Ejemplo correcto de declaración if en R
edad <- 20

if (edad >= 18) {
  print("Eres mayor de edad")
} else {
  print("No eres mayor de edad")
} # Output: [1] "Eres mayor de edad"

# Ejemplo incorrecto de declaración if en R
if edad >= 18 {
  print("Eres mayor de edad")
} else {
  print("No eres mayor de edad")
} # Output: Error: unexpected symbol in "if edad"

Adaptado de Valencia Díaz (2024)

Ejemplo de semántica

# Ejemplo correcto
edad <- 25

ifelse(edad>=18, "Eres mayor de edad", "No eres mayor de edad") # Output: [1] "Eres mayor de edad"

# Ejemplo incorrecto
edad <- as.numeric("veinticinco")

ifelse(edad>=18, "Eres mayor de edad", "No eres mayor de edad")
# Output: Error in if (edad >= 18) { : missing value where TRUE/FALSE needed

Adaptado de Valencia Díaz (2024)

Ejemplo de Pragmática

# Ejemplo correcto
area_circunferencia <- function(radio) {
  area <- pi*radio^2
}

area_calculada <- area_circunferencia(5)

paste0("El área de la circunferencia es ", area_calculada)
# Output: [1] "El área de la circunferencia es 78.5398163397448"


# Ejemplo incorrecto
area_circunferencia <- function(radio) {
  pi <- 3.1416
  area <- pi*radio^2
}

area_calculada <- area_circunferencia(5)

paste0("El área de la circunferencia es ", area_calculada)
# Output: [1] "El área de la circunferencia es 78.54"

Adaptado de Valencia Díaz (2024)

Niveles de los lenguajes de programación

Primera computadora programable multipropósito

ENIAC

Primera computadora programable producida a escala

IBM 650

Lenguajes de programación

Componentes para usar un lenguaje de programación

Redes de ayuda

Consejos al pedir ayuda

  • Dar detalles del problema y lo que quiere lograr.
  • Mencionar las versiones de R y R Studio instaladas.
  • Si se intenta usar un paquete, decir cuál es y la versión instalada de éste.
  • Copiar y pegar todo el código de error.
  • Pedir el favor y agradecer.

Introducción a R

Software estadístico

Matlab

Software estadístico

Software estadístico

Casos de uso de R

Instalación

Rtools (Sólo Microsoft Windows)

IDEs

Lenguaje R

Tidydata

Tomado de Allison Horst (2023)

Tidydata

Tomado de Allison Horst (2023)

Tidydata

Tidydata

Tidydata

Tidydata

Informes

Informes

Tidyverse

Tidyverse

Tidyverse

Librerías

Librerías en R y Python para ciencia de datos

R Python Uso
ggplot2 matplotlib / seaborn Visualización de datos
dplyr pandas Manipulación de datos
xgboost xgboost Machine learning
caret scikit-learn Machine learning
lubridate pandas Manipulación de fechas y tiempos
forecast statsmodels Modelos estadísticos

Análisis Exploratorio de Datos (EDA)

Pingüinos Palmer

Medidas de tendencia central

Media

\(\begin{equation} \bar{X} = \frac{\sum_{i=1}^{n} X_{i}}{n} \end{equation}\)

Ventaja: fácil de interpretar y calcular.

Desventaja: sensible a valores extremos.

Mediana

Es el valor que se encuentra en el centro de una secuencia ordenada de datos. Hay la misma cantidad de datos por encima y por debajo de ella.

\(\begin{equation} \text{Mediana} = \begin{cases} X_{\frac{n+1}{2}}, & \text{si } n \text{ es impar} \\ \frac{X_{\frac{n}{2}} + X_{\frac{n}{2} +1}}{2}, & \text{si } n \text{ es par} \end{cases} \end{equation}\)

Ventaja: fácil de interpretar y calcular, no es sensible a valores extremos.

Moda

Es el valor que aparece con mayor frecuencia, se utiliza en fines descriptivos ya que es muy variable para diferentes muestras. Puede haber más de una moda.

Un conjunto de datos puedes ser unimodal, bimodal o multimodal.

Ejemplo

Calcular la media, mediana y moda de la edad, altura y dinero en efectivo de los estudiantes del grupo 6 de Estadística General:

Id Edad Altura (cm) Dinero en efectivo (COP)
1 18 170 2000
2 20 180 65000
3 21 178 20000
4 22 159 20000
5 20 158 2500
6 20 175 100
7 21 162 1000
8 23 172 20
9 20 184 30
10 19 155 45
11 22 164 50000
12 26 175 1500000
13 22 180 1000000
14 20 185 250
15 23 178 60000
16 21 173 200000
17 22 162 50
18 21 173 52
19 22 168 40
20 20 165 4
21 23 180 150

Ejemplo

Calcular la media, mediana y moda de la edad, altura y dinero en efectivo de los estudiantes del grupo 6 de Estadística General:

Id Edad Altura (cm) Dinero en efectivo (COP)
1 18 170 2000
2 20 180 65000
3 21 178 20000
4 22 159 20000
5 20 158 2500
6 20 175 100000
7 21 162 1000
8 23 172 20000
9 20 184 30000
10 19 155 45000
11 22 164 50000
12 26 175 1500000
13 22 180 1000000
14 20 185 250000
15 23 178 60000
16 21 173 200000
17 22 162 50000
18 21 173 52000
19 22 168 40000
20 20 165 4000
21 23 180 150000
22 19 178 70000

Ejemplo

[1] "La variable Edad (años) tiene una media de 21.14, su mediana es 21 y su moda es 20"
[1] "La variable Altura (cm) tiene una media de 171.55, su mediana es 173 y su moda es 180"
[1] "La variable Dinero (COP) tiene una media de 169613.64, su mediana es 50000 y su moda es 20000"
# Formula moda
moda <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}


link_encuesta <- "https://docs.google.com/spreadsheets/d/e/2PACX-1vRSn6T8sclb-P9UeGkh305w-8fs-rPR1_ritC2FPOLS2Ub13KUr_vF1dvRb0ZYr582s3aXD2gEVziGL/pub?gid=1539739636&single=true&output=csv"

data <- read.csv(link_encuesta)

# Edad
media_edad <- round(mean(data$Edad), digits=2)
mediana_edad <- median(data$Edad)
moda_edad <- moda(data$Edad)

# Altura
media_altura <- round(mean(data$Altura..cm.), digits=2)
mediana_altura <- median(data$Altura..cm.)
moda_altura <- moda(data$Altura..cm.)

# Dinero
media_dinero <- round(mean(data$Dinero.en.efectivo), digits=2)
mediana_dinero <- median(data$Dinero.en.efectivo)
moda_dinero <- moda(data$Dinero.en.efectivo)

print(paste0("La variable Edad (años) tiene una media de ", media_edad, ", su mediana es ", mediana_edad, " y su moda es ", moda_edad))

print(paste0("La variable Altura (cm) tiene una media de ", media_altura, ", su mediana es ", mediana_altura, " y su moda es ", moda_altura))

print(paste0("La variable Dinero (COP) tiene una media de ", media_dinero, ", su mediana es ", mediana_dinero, " y su moda es ", moda_dinero))

Medidas de dispersión

Rango

\(\begin{equation} Rango = Valor_{máximo} - Valor_{mínimo} \end{equation}\)

Propiedades:

  • Fácil de calcular.
  • Sensible a valores extremos.
  • No considera la distribución de los datos.
  • Posible dependencia del tamaño de la muestra.
  • Puede ser problemático para comparar diferentes conjuntos de datos o muestras.
  • Brinda una vista rápida y sencilla de la dispersión y sobre la presencia de datos atípicos significativos.

Varianza

\(\begin{equation} \sigma^2 = \frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)^2 \end{equation}\)

\(\begin{equation} s^2 = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2 \end{equation}\)

Propiedades de la varianza

  • Siempre es positiva.
  • Sensible a valores extremos, aunque de manera más equilibrada que el rango.
  • Unidades cuadradas.
  • Aditividad: la varianza de la suma de variables aleatorias independientes es igual a la suma de sus varianzas individuales.
  • Permite comparar diferentes conjuntos de datos.
  • Dependencia del escalado

\(\begin{equation} Y = aX \\ Var(Y) = a^2 Var(X) \end{equation}\)

¿Por qué en la expresión de la varianza se utiliza el cuadrado de las diferencias en vez de su valor absoluto?

Desviación estándar

\(\begin{equation} \sigma = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (x_i - \mu)^2} \end{equation}\)

\(\begin{equation} s = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2} \end{equation}\)

Propiedades de la desviación estándar

  • Mismas unidades que los datos.
  • Interpretación directa.
  • Sensible a valores extremos.
  • Propiedad de escalabilidad: si \(Y = aX\), \(Std(Y) = |a|*Std(X)\).
  • Aditividad en variables independientes: \(Std(X+Y) = \sqrt{Var(X) + Var(Y)}\).
  • Sensible a outliers.
  • Asume distribución simétrica.

Coeficiente de variación

\(\text{Coeficiente de Variación} = \frac{\text{Desviación Estándar}}{\text{Media}} \times 100\%\)

Medidas de forma

Coeficiente de asimetría (skewness)

Indica hacia dónde están sesgados los datos.

\(\text{As} = \sum_{i=1}^{n} \frac{(X_{i}-\bar{X})^2}{ns^3}\)

Valores:

\([-0.5 , 0.5] \text{ ...Simétrico}\)

\([-1, -0.5) \text{ ó } (0.5, 1] \text{ ...Sesgo moderado}\)

\(As < -1 \text{ ó } As>1 \text{ ...Muy sesgado}\)

Coeficiente de asimetría (skewness)

Coeficiente de asimetría (skewness)

Curtosis

Indica cuán “chata” o alta es la distribución

\(\text{kur} = \sum_{i=1}^{n} \frac{(X_i - \bar{X})^4}{ns^4}\)

Medidas de posición (cuantiles)

Los cuantiles sirven para estudiar o analizar lo que sucede con algún porcentaje de datos en particular, cuando se han ordenado previamente los datos. Los cuantiles se dividen en cuartiles, deciles y percentiles.

p-tiles

  • Cuartil: genera cuatro intervalos, cada uno con el 25% de los casos.
  • Quintil: genera cinco intervalos, cada uno con el 20% de los casos.
  • Decil: genera 10 intervalos, cada uno con el 10% de los casos.
  • Veintil: genera 20 intervalos, cada uno con el 5% de los casos.
  • Percentil: genera 100 intervalos, cada uno con el 1% de los casos.
  • N personalizado: es posible determinar el número de intervalos, según sea la necesidad. Por ejemplo, un valor de 3 produciría 3 categorías agrupadas (2 puntos de corte), cada una de las cuales contendría el 33.3% de los casos.

Percentiles

El percentil es un valor tal que el P por ciente de las observaciones son menores a tal valor.

Ejemplo: suponga que la nota del parcial es 4.1 y esa nota corresponde al percentil 90. Esto indica que el 90% de los estudiantes obtuvieron una nota entre 0.0 y 4.1 o que sólo el 10% sacó más de 4.1.

Para calcular los percentiles primero se deben ordenar los datos.

Percentiles

\[\text{Dec} = \frac{i*n}{100} \text{ ; i es el percentil a calcular} \]

\[P_{i} = \begin{cases} X_{(\lfloor Dec \rfloor + 1)} & \text{si } Dec \neq 0 \\ \frac{X_{Dec} + X_{Dec+1)}}{2} & \text{si } Dec = 0 \end{cases}\]

Datos: 11 , 13 , 16 , 20 , 21

\(P_{10} = ?\) \(P_{95} = ?\) \(P_{73} = ?\)
\(P_{20} = ?\) \(P_{50} = ?\)